package com.levi.batch;

import org.apache.rocketmq.client.producer.DefaultMQProducer;
import org.apache.rocketmq.common.message.Message;

import java.nio.charset.StandardCharsets;
import java.util.ArrayList;

/**
 * 批量发送消息
 * 把很多歌message对象放到一个容器里面，一次性把这个容器发过去
 * 依次发送长度不能超过4M，超过4M需要用迭代器分割
 */

public class Producer {

    public static void main(String[] args) throws Exception {
        /**
         * 1.创建生产者，指定生产者组
         * 2.指定nameserver地址
         * 3.启动producer
         * 4.创建消息，指定topic，tag，消息体
         * 5.发送消息
         * 6.关闭producer
         */
        //1.创建生产者，指定生产者组
        DefaultMQProducer producer = new DefaultMQProducer("group1");
        //2.指定nameserver地址
        producer.setNamesrvAddr("127.0.0.1:9876");
        producer.setSendMsgTimeout(1000000);
        //3.启动producer
        producer.start();
        //4.创建消息，指定topic，tag，消息体
        //构建消息集合，创建消息把消息放进消息集合中
        ArrayList<Message> messageList = new ArrayList<>();
        Message message1 = new Message("base", "tagA", "批量发送的消息".getBytes(StandardCharsets.UTF_8));
        Message message2 = new Message("base", "tagA", "批量发送的消息".getBytes(StandardCharsets.UTF_8));
        Message message3 = new Message("base", "tagA", "批量发送的消息".getBytes(StandardCharsets.UTF_8));
        messageList.add(message1);
        messageList.add(message2);
        messageList.add(message3);
        //发送消息集合
        producer.send(messageList);

        producer.shutdown();
    }
}
